package main

import "fmt"

//在go语言中  nil 就是一个变量  var nil Type :Type有可能是个指针，channel，方法，接口，map,切片 6中类型
// type Type int
func main() {
	var a *int
	fmt.Println(a)
	fmt.Println(a == nil)

	var b map[int]int //nil也是map的零值
	fmt.Println(b == nil)

	//var c struct{} //nil 不是结构体的零值
	//fmt.Println(c == nil) //报错
	//fmt.Println(a == b) //报错 虽然2个都是nil 但是2个类型不等  每种类型的nil是不同的 无法比较
	//空结构体的值不是nil  是 zerobase 是有指针的

	// 空接口是 nio接口么

	var aa interface{}
	var bb interface{}
	var cc *int

	fmt.Println(aa == nil)
	fmt.Println(bb == nil)
	fmt.Println(cc == nil)
	aa = cc //把cc复制给aa 之前cc 和aa都是nil 赋值之后 aa还是nil么  答案是false

	fmt.Println(aa == nil)
}
